/*
 * Copyright (c) 2022, Polsys Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * File name: ny8_driver_config.h
 * 
 * Version: 1.0
 * 
 * Description: 
 * 		ny8 MCU驱动的配置文件。所有配置项请设置在允许的取值范围内，否则MCU运行会出错。
 *      配置项在调用对应的外设初始化函数后生效。
 * Change Logs:
 * Date           Author       Notes
 * 2022/04/14     刘言         初版
 */
#ifndef _NY8_DRIVER_CONFIG_H_
#define _NY8_DRIVER_CONFIG_H_


// MCU型号选择
#define MCU_NY8_MODEL       MCU_NY8B062E

// MCU核心配置 Mcu_Init

// 高速振荡器频率HZ，这不是设置项，是告诉其他组件振荡器频率。振荡器频率由选项字节决定。
#define MCU_FHOSC           20000000
// 指令周期，这不是设置项，是告诉其他组件MCU选项字节中的指令周期。指令频率 FINST = MCU_FHOSC/MCU_ICY.
#define MCU_ICY             4
// 中断使能状态的初始值，某些中断在这里统一初始化使能,设为0关闭所有。
// 所有可开启中断： INT1IE_EN|WDTIE_EN|T2IE_EN|LVDIE_EN|T1IE_EN|INT0IE_EN|PABIE_EN|T0IE_EN
#define MCU_INTE_INIT       WDTIE_EN|T0IE_EN
// 所有可开启中断： T3IE_EN
#define MCU_INTE2_INIT      0


// GPIO初始化配置(其它GPIO配置请调用专用API) Gpio_Init

#define GPIO_PA_OUT_VALUE   0XFF    // 1111 1111 PA默认输出电平
#define GPIO_PB_OUT_VALUE   0XFE    // 1111 1110 PB默认输出电平
#define GPIO_EN_INT0        1   // 1：使能INT0，对应管脚中断将失效。
#define GPIO_EN_INT1        0   // 1: 使能INT1，对应管脚中断将失效。
#define GPIO_INT0_EDG       3   // 触发选择。1:上升沿，2：下降沿，3：上升/下降沿。不启用时设为1可以节省代码量。
#define GPIO_INT1_EDG       1   // 触发选择。1:上升沿，2：下降沿，3：上升/下降沿。不启用时设为1可以节省代码量。


// TIM0（上数定时器）初始化配置。(用于polsys时基，建议10ms) Tim0_Init

#define TIM0_CLK_SOURCE 0       // 时钟源。0:FINST；1:由TIM0_LCK决定。
#define TIM0_LCK        0       // 0：外部 EX_CKI0 脚；1：低频振荡I_LRC/E_LXT。仅 TIM0_CLK_SOURCE = 1 有效。
#define TIM0_PAS        0       // 1:TIM0分频器分给WDT,TIM0将不分频。
#define TIM0_PS         7       // 预分频比。0~7分别为2、4、8、16、32、64、128、256分频。
#define TIM0_CYCLE      195     // 周期值(已处理上数)。0~255

// TIM1(下数定时器)初始化配置

#define TIM1_LEN        8       // 定时器位数。8或者10。设置为8可节省代码量。
#define TIM1_CLK_SOURCE 0       // 时钟源。0:FINST；1:EX_CKI0。
#define TIM1_PS         8       // 分频比，0~8分别为2、4、8、16、32、64、128、256、1分频。
#define TIM1_ONE        0       // 1：单次模式，溢出后（减到0之后）自动停止；0：连续模式。
#define TIM1_CYCLE      255     // 周期值。8位：0 ~ 255；10位：0 ~ 1023。
#define TIM1_PWM        0       // PWM值（占空比比较值）。8位：0 ~ 255；10位：0 ~ 1023。计数值小于PWM值时输出有效电平。
#define TIM1_PWMOAL     0       // PWM输出有效电平。1：低电平；0：高电平。
#define TIM1_PWMOEN     0       // 1:开启PWM输出，PWM1端口会同步切换为PWM输出。
#define TIM1_EN         0       // 1：初始化后立即运行

// TIM2(下数定时器)初始化配置

#define TIM2_LEN        8       // 定时器位数。8或者10。设置为8可节省代码量。
#define TIM2_CLK_SOURCE 0       // 时钟源。0:FINST；1:EX_CKI0。
#define TIM2_PS         0       // 分频比，0~8分别为2、4、8、16、32、64、128、256、1分频。
#define TIM2_ONE        0       // 1：单次模式，溢出后（周期值达到）自动停止；0：连续模式。
#define TIM2_CYCLE      250     // 周期值。8位：0 ~ 255；10位：0 ~ 1023。
#define TIM2_PWM        0       // PWM值（占空比比较值）。8位：0 ~ 255；10位：0 ~ 1023。计数值小于PWM值时输出有效电平。
#define TIM2_PWMOAL     0       // PWM输出有效电平。1：低电平；0：高电平。
#define TIM2_PWMOEN     0       // 1:开启PWM输出，PWM2端口会同步切换为PWM输出。
#define TIM2_EN         1       // 1：初始化后立即运行

// TIM3(下数定时器)初始化配置

#define TIM3_LEN        8       // 定时器位数。8或者10。设置为8可节省代码量。
#define TIM3_CLK_SOURCE 0       // 时钟源。0:FINST；1:EX_CKI0。
#define TIM3_PS         2       // 分频比，0~8分别为2、4、8、16、32、64、128、256、1分频。
#define TIM3_ONE        0       // 1：单次模式，溢出后（周期值达到）自动停止；0：连续模式。
#define TIM3_CYCLE      254     // 周期值。8位：0 ~ 255；10位：0 ~ 1023。
#define TIM3_PWM        0       // PWM值（占空比比较值）。8位：0 ~ 255；10位：0 ~ 1023。计数值小于PWM值时输出有效电平。
#define TIM3_PWMOAL     1       // PWM输出有效电平。1：低电平；0：高电平。
#define TIM3_PWMOEN     0       // 1:开启PWM输出，PWM3端口会同步切换为PWM输出。
#define TIM3_EN         0       // 1：初始化后立即运行


// RFC 初始化配置

#define RFC_CH          0       // RFC通道（管脚）选择。0~7：PA0~PA7；8~13：PB0~PB5。
#define RFC_EN          0       // 1:使能RFC，TIM1_EN将无效，受控于RFC（TIM1_EN建议保持0）.


// ADC 初始化配置

#define ADC_EN          0       // 1：使能ADC，0：关闭ADC（省电）
#define ADC_CH          4       // ADC初始通道
#define ADC_EVHENB      0       // ADC外部VREFH开关。0：ADC参考电压由VHS决定；1：ADC参考电压由引脚VREFH提供。
// 内部参考电压选择。0~3分别对应2V、3V、4V、VDD。
// 注意：参考电压2V、3V、4V、5V分别对应的ADC时钟最大频率为250K、500K、1M、2M。(代理商技术人员说多快都行)
#define ADC_VHS         0       
#define ADC_ADCK        3       // ADC时钟分频，0~3分别对应FINST的16、8、1、2分频。
#define ADC_DLEN        0       // ADC数据位数。0、2分别代表8、12位。
#define ADC_SHCK        3       // ADC采样时间。0~3分别代表1、2、4、8个ADC时钟周期。ADC转换时间=(ADC_SHCK + 14)个ADC时钟周期。
// 设置异步转换完成通知回调
#define Adc_EventDone(adv)      //RHC_EvADCCompleted(adv)

#endif
